package edu.java基础;
//类型转换


/*隐式转换
* 取值范围小的数据给取值范围大的数据类型赋值，可直接赋值
* int a = 10;  4字节  取值范围小
* double b=a;  8字节
* 运算时先将a自动转换成double,再运算
* b=10.0
*
* 取值范围从小到大：byte->short/char->int->long->float->double
*                               注意long比float小
* byte short char 运算时不管是否有更高数据类型都会先转化为int再运算
* byte a=10; byte b=20;int c=a+b;是直接用int接收的
* */


/*强制转换（可能会有精度损失）
* 范围大的数值给小的赋值，不能直接给
* 目标数据类型 变量名 = （目标数据类型）值或变量
* int a=10;
* byte b=(byte)a;
*
*
* */
public class E_类型转换 {
    public static void main(String[] args) {
       /* byte a=3;
        byte b=4;
        byte c=a+b;//不兼容的类型: 从int转换到byte可能会有损失
                   //14行知识点
        需要强制类型转换
        byte c=(byte)(a+b)   //不能分别强转a,b
        System.out.println(c);
        */
        /*java存在常量优化机制，在编译时会让3+4，再判断7是否在范围内
        * 在范围内：通过编译
        * 不在范围：编译出错
        * */
        byte d=3+4;
        System.out.println(d);

    }
}

